// 编辑器状态
export interface EditorState {
  content: string;           // YAML内容
  cursorPosition: number;    // 光标位置
  isDirty: boolean;         // 是否有未保存更改
  filename: string;         // 当前文件名
  lastModified: Date;       // 最后修改时间
}

// 文件历史记录
export interface FileHistory {
  id: string;               // 唯一标识符
  filename: string;         // 文件名
  content: string;          // 文件内容
  timestamp: Date;          // 保存时间
  size: number;            // 文件大小（字节）
}

// 编辑器主题
export type EditorTheme = 'light' | 'dark' | 'auto';

// 用户设置
export interface UserSettings {
  theme: EditorTheme;               // 主题模式
  fontSize: number;                   // 字体大小 (12-24)
  tabSize: number;                   // 制表符宽度 (2,4,8)
  autoSave: boolean;                 // 自动保存
  autoSaveInterval: number;          // 自动保存间隔（秒）
  wordWrap: boolean;                 // 自动换行
  showLineNumbers: boolean;          // 显示行号
  showMinimap: boolean;             // 显示缩略图
  keyBindings: 'default' | 'vim' | 'emacs'; // 快捷键方案
}

// 验证结果
export interface ValidationResult {
  isValid: boolean;         // 是否有效
  errors: YAMLError[];     // 错误列表
  warnings: YAMLError[];   // 警告列表
  lastValidated: Date;     // 最后验证时间
}

// YAML错误信息
export interface YAMLError {
  line: number;            // 错误行号
  column: number;          // 错误列号
  message: string;         // 错误信息
  severity: 'error' | 'warning' | 'info'; // 严重程度
  code?: string;          // 错误代码
}

// 本地存储键名常量
export const STORAGE_KEYS = {
  EDITOR_CONTENT: 'yaml-editor-content',
  USER_SETTINGS: 'yaml-editor-settings',
  FILE_HISTORY: 'yaml-editor-history',
  RECENT_FILES: 'yaml-editor-recent'
} as const;

// 默认用户设置
export const DEFAULT_SETTINGS: UserSettings = {
  theme: 'auto',
  fontSize: 14,
  tabSize: 2,
  autoSave: true,
  autoSaveInterval: 30,
  wordWrap: true,
  showLineNumbers: true,
  showMinimap: false,
  keyBindings: 'default'
};

// 示例YAML内容
export const EXAMPLE_YAML = `# YAML编辑器示例
name: "示例配置"
version: "1.0.0"

server:
  host: "localhost"
  port: 3000
  ssl: false

database:
  type: "postgresql"
  host: "localhost"
  port: 5432
  name: "myapp"
  credentials:
    username: "user"
    password: "password"

features:
  - "authentication"
  - "logging"
  - "monitoring"

settings:
  debug: true
  timeout: 30
`;

// 预览模式
export type PreviewMode = 'tree' | 'json';

// Monaco编辑器主题
export type MonacoTheme = 'vs-dark' | 'vs-light';

// 工具栏操作类型
export type ToolbarAction = 
  | 'format'
  | 'validate'
  | 'clear'
  | 'undo'
  | 'redo'
  | 'find'
  | 'replace'
  | 'download'
  | 'upload';

// 应用状态
export interface AppState {
  editor: EditorState;
  settings: UserSettings;
  validation: ValidationResult;
  previewMode: PreviewMode;
  isLoading: boolean;
  error: string | null;
}